『善用工具』這件事,不論你是否要走敏捷開發,都是不錯的事。人家不是說了嗎:『站在巨人的肩膀上。』不過在實務上,我們經常看到兩種很令人擔憂的工具使用方式:『濫用』與『亂用』。我這裡不把『不用』拿進來討論,是因為這件事大家都知道。人家開發好的工具給你你不用,那當然不是好習慣,這件事Trivial到沒有撰文討論的價值。
濫用與亂用有什麼不同?簡單說,濫用指的是用了太多的大工具去解決工作上的小問題。要知道,任何事物都有學習曲線,當這個進入門檻高於你所得到的價值,那工具就被濫用了。有時候不是你痛不痛的問題,是公司是不是因此遭受損失的問題。也就是,你用你的舊方法輕輕鬆鬆地,但是公司因為你的這種工作方式慢慢地付出不必要的損失,那也是需要改變的。然而,最常見的事就是『其實你根本不痛』,或是『公司根本不會因為這樣造成損失』,在這種情形下,硬是把坊間很『潮』的工具引入使用,就是濫用了。
而濫用其實也不算很嚴重,因為不痛苦的事硬去改變,這樣被硬引入的工具自然會被淘汰,因此也不需要太放在心上。只是我必須說,當你引入的工具被淘汰時,也不要太傷心,也許不是你的東西不好,只是大家的腳步還沒跟上你,或者公司還沒看到你預先看到的壞狀況。過幾個月等大家踩到痛處自然會回頭來找你了。
『亂用』,才是筆者認為最糟糕的工具使用方式。 (終於要進入主題了 XD)
有時候我們在工作上遇到問題不好解決,Scrum Master會跳出來,拿出私藏的工具給你使用。當然OK,那是他本職的任務嘛,但是Scrum Master專業不專業,就看這裡了。如果這個工具本來就不是設計來做這個用途,那你用起來就肯定難用了。舉個例子吧:
Excel大概是坊間看過最容易被誤用的工具了,因為他一格一格的,又可以上色,又可以設定巨集與函數,最近更絕了,還可以共用,於是經常被人拿來解決工作上的問題。
Excel開宗明義就告訴你,它的用途是要拿來計算、統計、做圖表,那也是他的強項。然而,因為她的table很好用,方方正正的,於是經常會被拿來當成issue tracker。
Issue tracker!?有沒有搞錯?沒有搞錯。共用表格後,凡是有新issue就去加一筆,RD領完issue就把字體標為灰色,解決了就標成粗體,有什麼意見就大家在旁邊直接寫註解,筆者甚至看過直接把Excel當成討論去在那邊討論issue的。我的老天鵝啊!萬一有人不照約定好的格式走,你怎麼辦?你總不會槍斃他吧?
Excel當成Issue tracker只是其中一個例子,筆者手上有一些案子,在拿到更多資源前,也被迫只能暫時地拿共享的excel來記錄issue,但是那是暫時的。當你的公司與手上的issue越來越多,共享的人越來越雜,你需要更專業的issue追蹤工具。
Jira是個不錯的工具,而如果你的團隊還沒有太多經費,你也可以考慮OpenSource的Redmine。
『有沒有搞錯,Confluence是付費軟體耶!哪有誤用的問題?』有的,有慘了。就是因為Confluence是付費軟體,於是大家不管在工作上遇到什麼困難,都會想要把資料往裏頭塞。然而,東西塞多了,難免會有消化不良的問題,這時候專業的Confluence管理團隊也許是選項之一,但是這不是我們討論範圍,我們討論的是Confluence的誤用。
Confluence的初衷,是想要做一個『協作平台』,也就是你把它當成一個『知識庫』,並且藉眾人的力量,讓他慢慢形成公司內部重要的Domain knowhow集散地。原意是不錯,那麼把它當成test-case管理站如何呢?
嗯...,好吧至少比excel好一點啦,但是還是少了一點什麼。
你看大家有多愛用excel就好了,連test-case management也那麼愛用excel。
Excel與Confluence有一個共通點:『儲存靜態資料』。以Confluence來說,公司歷史沿革,歷屆董事長芳名錄,新人訓練教材,面試考古題,都是適合存放的內容。test-case為什麼不適合?因為test-case會被執行。我們這麼說吧,一個較具規模的公司,他會有固定的測試案例,會有完整的發布計畫,也會有流通的部署流水線。簡單來說,『測試』這件事情是動態的,拿靜態的儲存空間來用,充其量就是能『放東西』而已。
於是,譬如在版本A發布前,在QA環境要測那些東西,執行結果如何,執行過程有那些問題,幾時發issue給RD的,又是幾時重測,這些都要有紀錄。一樣的事在預產線環境要再做一次,Release當天還要再做一次,但是測試內容與方向,甚至目的都不一樣。
上面的流程,Confluence可幫上一些忙,譬如他可以儲存測試案例集,但其他事就無能為力了。Jira可以幫上一些忙,譬如測出問題來以後的issue狀態追蹤,但其他就無能為力了。
關於測試的管理,解決方案也很多:Jira的Test case plugin是不錯的選擇,有了他,Jira就如虎添翼了。然而,如果你暫時還沒有這麼多經費,免費的Testlink也可以助你一臂之力。
礙於篇幅,其實沒有其他了。筆者只是想表達,一間公司傾全體人員的力量去開發一個軟體,是有它的初始目的與擅長功能的。拿工具來解決痛苦是件好事,但是慎選工具也是很重要。把儲存的工具拿來追蹤動態資訊,或是把計算工具拿來做靜態儲存,都是浪費公司經費的行為,而事實上也沒有真正解決問題。
慎選工具,善用工具,才是邁向好的軟體工程,以及好的DevOps工作模式的第一步。